package com.qzdatasoft.ratelimit.adapter;

import jakarta.servlet.http.HttpServletRequest;

/**
 * 客户端信息提取器接口
 * 用于从HTTP请求中提取客户端信息（IP地址、用户ID等）
 */
public interface ClientInfoExtractor {
    
    /**
     * 从HTTP请求中提取客户端IP地址
     * 
     * @param request HTTP请求对象
     * @return 客户端IP地址
     */
    String extractClientIp(HttpServletRequest request);
    
    /**
     * 从HTTP请求中提取用户ID
     * 
     * @param request HTTP请求对象
     * @return 用户ID，如果无法获取则返回null
     */
    String extractUserId(HttpServletRequest request);

    /**
     * 判断请求是否来自资源所有者
     *
     * @param urlPatten 资源URL
     * @return 如果请求来自资源所有者则返回true，否则返回false
     */
    boolean isOwner(String urlPatten);
}